/***********************************************************
 * Author: 	Brandon McKune
 * E-Mail:	bmckune.cs@gmail.com
 * Date:	September 2, 2011
 * Class:	CSc 8370 - Data Security
 * Time:	1150 - 1325
 * Smstr:	Fall 2011
 */

#ifndef MATRIX_HANDLER_H_
#define MATRIX_HANDLER_H_

#include "common.h"
#include <vector>

using namespace std;

class MatrixHandler{
public:
	MatrixHandler();
	~MatrixHandler();
	bool loadMatrix(char* buffer, size_t size, UINT numColumns);
	char getElement(uint64_t row, uint64_t column);
	char* transposeMatrix();
	bool permuteMatrix(UINT source, UINT destination);
	void printMatrix();
protected:
	bool deleteMatrix();
	bool checkValidity(char charToCheck);
private:
	vector<vector<char> > m_prg2dMatrix;
	//char** m_prg2dMatrix;
	UINT m_ui64MatrixRows;
	UINT m_ui64MatrixColumns;
};

#endif //MATRIX_HANDLER_H_
